from random import randint
import time
from hashlib import md5
from urllib import parse, request
from bs4 import BeautifulSoup
import MySQLdb


class Helper:

    def __init__(self):

        self.xing = ['赵', '钱', '孙', '李', '周', '吴', '郑', '王', '冯', '陈', '褚', '卫', '蒋', '沈', '韩', '杨', '朱', '秦', '尤', '许',
                     '何', '吕',
                     '施', '张', '孔', '曹', '严', '华', '金', '魏', '陶', '姜', '戚', '谢', '邹', '喻', '柏', '水', '窦', '章', '云', '苏',
                     '潘', '葛',
                     '奚', '范', '彭', '郎', '鲁', '韦', '昌', '马', '苗', '凤', '花', '方', '俞', '任', '袁', '柳', '酆', '鲍', '史', '唐',
                     '费', '廉',
                     '岑', '薛', '雷', '贺', '倪', '汤', '滕', '殷', '罗', '毕', '郝', '邬', '安', '常', '乐', '于', '时', '傅', '皮', '卞',
                     '齐', '康',
                     '伍', '余', '元', '卜', '顾', '孟', '平', '黄', '和', '穆', '萧', '尹', '姚', '邵', '湛', '汪', '祁', '毛', '禹', '狄',
                     '米', '贝',
                     '明', '臧', '计', '伏', '成', '戴', '谈', '宋', '茅', '庞', '熊', '纪', '舒', '屈', '项', '祝', '董', '梁', '杜', '阮',
                     '蓝', '闵',
                     '席', '季', '麻', '强', '贾', '路', '娄', '危', '江', '童', '颜', '郭', '梅', '盛', '林', '刁', '钟', '徐', '邱', '骆',
                     '高', '夏',
                     '蔡', '田', '樊', '胡', '凌', '霍', '虞', '万', '支', '柯', '昝', '管', '卢', '莫', '经', '房', '裘', '缪', '干', '解',
                     '应', '宗',
                     '丁', '宣', '贲', '邓', '郁', '单', '杭', '洪', '包', '诸', '左', '石', '崔', '吉', '钮', '龚', '程', '嵇', '邢', '滑',
                     '裴', '陆',
                     '荣', '翁', '荀', '羊', '於', '惠', '甄', '曲', '家', '封', '芮', '羿', '储', '靳', '汲', '邴', '糜', '松', '井', '段',
                     '富', '巫',
                     '乌', '焦', '巴', '弓', '牧', '隗', '山', '谷', '车', '侯', '宓', '蓬', '全', '郗', '班', '仰', '秋', '仲', '伊', '宫',
                     '宁', '仇',
                     '栾', '暴', '甘', '钭', '厉', '戎', '祖', '武', '符', '刘', '景', '詹', '束', '龙', '叶', '幸', '司', '韶', '郜', '黎',
                     '蓟', '薄',
                     '印', '宿', '白', '怀', '蒲', '邰', '从', '鄂', '索', '咸', '籍', '赖', '卓', '蔺', '屠', '蒙', '池', '乔', '阴', '鬱',
                     '胥', '能',
                     '苍', '双', '闻', '莘', '党', '翟', '谭', '贡', '劳', '逄', '姬', '申', '扶', '堵', '冉', '宰', '郦', '雍', '卻', '璩',
                     '桑', '桂',
                     '濮', '牛', '寿', '通', '边', '扈', '燕', '冀', '郏', '浦', '尚', '农', '温', '别', '庄', '晏', '柴', '瞿', '阎', '充',
                     '慕', '连',
                     '茹', '习', '宦', '艾', '鱼', '容', '向', '古', '易', '慎', '戈', '廖', '庾', '终', '暨', '居', '衡', '步', '都', '耿',
                     '满', '弘',
                     '匡', '国', '文', '寇', '广', '禄', '阙', '东', '欧', '殳', '沃', '利', '蔚', '越', '夔', '隆', '师', '巩', '厍', '聂',
                     '晁', '勾',
                     '敖', '融', '冷', '訾', '辛', '阚', '那', '简', '饶', '空', '曾', '毋', '沙', '乜', '养', '鞠', '须', '丰', '巢', '关',
                     '蒯', '相',
                     '查', '后', '荆', '红', '游', '竺', '权', '逯', '盖', '益', '桓', '公', '俟', '上', '官', '阳', '人', '赫', '皇', '甫',
                     '尉', '迟',
                     '澹', '台', '冶', '政', '淳', '太', '叔', '轩', '辕', '令', '狐', '离', '宇', '长', '鲜', '闾', '丘', '徒', '丌', '仉',
                     '督', '子',
                     '颛', '端', '木', '西', '漆', '雕', '正', '壤', '驷', '良', '拓', '跋', '夹', '父', '晋', '楚', '闫', '法', '汝', '鄢',
                     '涂', '钦',
                     '百', '里', '南', '门', '呼', '延', '归', '海', '舌', '微', '生', '岳', '帅', '缑', '亢', '况', '郈', '有', '琴', '商',
                     '牟', '佘',
                     '佴', '伯', '赏', '墨', '哈', '谯', '笪', '年', '爱', '佟', '第', '五', '言', '福']
        # 手机号开始
        self.phone_start = [130, 131, 132, 134, 135, 136, 137, 138, 139, 145, 147, 150, 151, 152, 155, 156, 157, 158,
                            159, 175, 176,
                            178, 182, 183, 184, 185, 186, 187, 188]

        # 1/男;2女;3/保密
        self.user_sex = [1, 2, 3]
        # 时间格式
        self.time_format = '%Y-%m-%d %H:%M:%S'
        # 用户默认密码
        self.init_password = '123456'
        self.url_address = 'https://www.qmsjmfb.com/'
        # 数据库

    def generate_time(self):
        """
        生成随机时间
        :return:
        """
        year = randint(1900, 2019)
        month = randint(1, 12)
        day = randint(1, 28)
        hour = randint(0, 23)
        minute = randint(0, 59)
        second = randint(0, 59)
        return time.strftime(self.time_format, (year, month, day, hour, minute, second, 0, 0, 0))

    def generate_sex(self):
        """
        生成随机性别
        :return:
        """
        index = randint(0, len(self.user_sex) - 1)
        return self.user_sex[index]

    def generate_phone(self):
        index = randint(0, len(self.phone_start) - 1)
        start = str(self.phone_start[index])
        end = str(randint(0, 99999999))
        if len(end) < 8:
            end = end.zfill(8)
        return start + '' + end

    def generate_password(self, create_time):
        """
        生成随机密码
        :param create_time: 注册时间
        :return:
        """
        obj = md5(bytes(create_time, encoding="utf8"))
        obj.update(self.init_password.encode('utf-8'))
        return obj.hexdigest()

    def parse_data(self, data):
        """
        请求页面, 解析姓名
        :param data:
        :return:
        """
        res = request.urlopen(self.url_address, parse.urlencode(data).encode(encoding='UTF8'), 3)
        users = []
        res_body = res.read().decode('utf-8')
        soup = BeautifulSoup(res_body, 'html5lib')
        name_lists = soup.find_all('li')
        for name_list in name_lists:
            create_time = self.generate_time()
            tmp_user = (
                None, name_list.get_text(), self.generate_phone(), self.generate_sex(),
                self.generate_password(create_time),
                self.generate_time(), self.generate_time())

            users.append(tmp_user)
        return users

# helper = Helper()
# for i in range(0, 50):
#     print(helper.generate_phone())
